class External {
    public int data1 = 1;
    int data2 = 2;
    public static int data3 = 3;
    static class Internal {
        /**
         * 1. 如何获取静态内部类对象？
         *         External.Internal internal = new External.Internal();
         * 2. 静态内部类当中，不能访问外部类的非静态成员。外部类的非静态成员，
         *          需要通过外部类的对象的引用才能访问。
         *     非要访问：External external = new External();
         *             System.out.println(external.data1);
         *             System.out.println(external.data2);
         *
         */
        public int data4 = 4;
        int data5 = 5;
        public static int data6 = 6;//静态内部类的成员可以用static修饰
        public void func() {
            //System.out.println(data1);静态内部类中，不能访问外部类的非静态成员。
            External external = new External();
            System.out.println(external.data1);
            System.out.println(external.data2);


            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
        }
    }
    public void test() {
        //同一个作用域下，不需要再通过外部类来创建内部类对象
        Internal internal = new Internal();
        System.out.println(internal.data5);
    }

}
public class Test {
    public static void main(String[] args) {
        //获取静态内部类对象
        External.Internal internal = new External.Internal();
        internal.func();
        External external = new External();
        external.test();
    }
}
